home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / crack / tkc4.txt < prev    next >
Encoding:
Text File  |  1999-01-12  |  23.1 KB  |  608 lines

  1. tKC Cracking Tutorial (Lesson 4)
  2.  
  3. Hi ya dudes!
  4.  
  5. Long time no tutor in 4 months! Phew, but as you can see I'm back to the
  6. cracking scene (yea I'm back in PC, aren't you happy? :-)) Ok, let's rock, in
  7. this tutor I'll teach you how to remove timeout limits and how to enable
  8. crippled features in some apps (and how to register your babe :-))
  9.  
  10. (No SoftIce, still my little ol' laptop :-)) In the next tutor #5 we'll talk
  11. about IDA (Interactive Disassembler, it r0x!!)
  12.  
  13. Sorry for my bad grammatical errors, I hope you'll understand this piece! :-)
  14.  
  15. Ok, let's go!
  16.  
  17. TOOLS:
  18.  
  19. For tools you need the followings: (I use these tools, I assume you'll use 'em)
  20.  
  21. W32Dasm 8.9 or high version (use FTP search: W32DSM89.ZIP)
  22. Hacker's View 5.66 (E-mail: sen@suslikov.kemerovo.su)
  23. FAR 1.50b (ftp://ftp.elf.stuba.sk/pub/pc/utilfile/far140b.exe) It's real nice!
  24. or use Windows Commander 3.50 ßeta 5 in stead of FAR (http://www.ghisler.com)
  25.  
  26.  
  27. Ask any crackers to get you these tools, they'll be happy to serve you! :-)
  28.  
  29. CONTENTS:
  30.  
  31. 1) a. How to crack Date Expiration in System Cleaner 1.21 (with W32Dasm)
  32.       URL: http://infortech.reedcs.com
  33.    b. How to bypass NAG about Invalid Date in System Cleaner 1.21 (w/W32Dasm)
  34.       URL: http://infortech.reedcs.com
  35. 2) How to enable crippled features in Macro Schedular 4.3.11 (with W32Dasm)
  36.       URL: http://www.mjtnet.com
  37.  
  38. 3) How to crack TrayCal 1.0 (to enter any codes)
  39.       URL: http://www.spaeder.com
  40. 4) Why I copy *.EXE to *.W32 files
  41. 5) ASM Source Code for a Patcher by Nop/PC '97
  42.  
  43. PART 1a: To crack Date Expiration in System Cleaner 1.21 (with W32Dasm)
  44.  
  45. Step 1. Run SystemCleaner.EXE
  46.  
  47. Step 2. You'll see the error message which it says that it has expired. (You
  48.         should write down this message) and exit the program.
  49.  
  50. Step 3. Ok, exit the program.
  51.  
  52.  
  53. Step 4. Run WC, go to System Cleaner directory.
  54.  
  55. Step 5. Copy SystemCleaner.EXE to SystemCleaner.EXX (for backup) and copy
  56.         SystemCleaner.EXE to SystemCleaner.W32 (for use by W32Dasm)
  57.  
  58. Step 6. Run W32Dasm and disassemble SystemCleaner.W32
  59.  
  60. Step 7. Once it's disassembled, click STRING DATA REFERENCE, look down for the
  61.         string "The trial period has ended. Please..".
  62.         (You should remember that error message), double click on it.
  63.  
  64. Step 8. Close SDR window, you should see the line:
  65.  
  66.  
  67.   :00464BB6 668B0DE44B4600          mov cx, word ptr [00464BE4]
  68.   :00464BBD B202                    mov dl, 02
  69.  
  70. * Possible StringData Ref from Code Obj ->"The trial period has ended. Please "
  71.                                         ->"register this software!"
  72.  
  73. Step 9. Ok, press UP arrow key till you see:
  74.  
  75.   :00464BA8 53                      push ebx
  76.   :00464BA9 8BD8                    mov ebx, eax
  77.   :00464BAB 80BB0C01000000          cmp byte ptr [ebx+0000010C], 00
  78.  
  79.   :00464BB2 741C                    je 00464BD0
  80.   :00464BB4 6A00                    push 00000000
  81.  
  82.   * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  83.   |:00464B4F(C)
  84.  
  85. Step 10. Look above at Referenced Jump at 00464B4F(C), press PgUp key 2 or 3
  86.          times till you see:
  87.   :00464B4F 7065                    jo 00464BB6
  88.  
  89.          And look below till you see:
  90.   :00464B54 64                      BYTE 064h
  91.  
  92.          If you see the string "BYTE xxxh", ignore it!! It's not a real jump,
  93.  
  94.          it's only strings, ok go back to 00464BA8 address. Now you'll find a
  95.          comparison, look at 464BB2, it's where it will jump to when it has
  96.          expired. Let's try.
  97.          Make sure the green color bar is on 00464BB2 741C         je 00464BD0 
  98.          and you should see Offset address below on the screen like @Offset
  99.          00063FB2h. It's where you can patch it in SystemCleaner.EXE.
  100.  
  101. Step 11. Go back to WC, run HIEW SYSTEM~1.EXE, press F4 to select Decode mode
  102.  
  103.          (ASM), press F5 and enter 63FB2. You should see like:
  104.  
  105.   .00064BB2: 741C                         je    .000064BD0   ---------- (1)
  106.   .00064BB4: 6A00                         push   000
  107.   .00064BB6: 668B0DE44B4600               mov    cx,[000464BE4]
  108.  
  109. Step 12. That's where you can change the bytes, press F3, enter EB, press F9
  110.          to update SYSTEM~1.EXE. Exit HIEW.
  111.  
  112. Step 13. Run SystemCleaner.EXE, does it expire? Voila! You've made it!!
  113.  
  114.  
  115. PART 1b: To bypass NAG about Invalid Date in System Cleaner 1.21 (with W32Dasm)
  116.  
  117.  
  118. (This is used only if you changed Date to 12/25/98 for example and changed back
  119. to 12/25/97, and you'll see a NAG which it says "The system clock has been
  120. moved back. Please reset system clock to correct blah blah")
  121.  
  122. Step 1. Run SystemCleaner.EXE
  123.  
  124. Step 2. You'll see the error message which it says that your date is fucked up,
  125.         and you should write down this message) and exit the program.
  126.  
  127. Step 3. Ok, exit the program.
  128.  
  129. Step 4. Run WC, go to System Cleaner directory.
  130.  
  131.  
  132. Step 5. Copy SystemCleaner.EXE to SystemCleaner.EXX (for backup) and copy
  133.         SystemCleaner.EXE to SystemCleaner.W32 (for use by W32Dasm)
  134.  
  135. Step 6. Run W32Dasm and disassemble SystemCleaner.W32
  136.  
  137. Step 7. Once it's disassembled, click STRING DATA REFERENCE, look down for the
  138.         string "The system clock has been moved back".
  139.         (You should remember that error message), double click on it.
  140.  
  141. Step 8. Close SDR window, you should see the line:
  142.  
  143.   :00464E56 668B0D884E4600          mov cx, word ptr [00464E88]
  144.  
  145.   :00464E5D B201                    mov dl, 01
  146.  
  147.   * Possible StringData Ref from Code Obj ->"The system clock has been moved "
  148.                                           ->"back. Please reset system clock "
  149.                                           ->"to correct time before re-running "
  150.  
  151. Step 9. Ok, press UP arrow key till you see:
  152.  
  153.   :00464E48 53                      push ebx
  154.   :00464E49 8BD8                    mov ebx, eax
  155.   :00464E4B 80BB0C01000000          cmp byte ptr [ebx+0000010C], 00
  156.  
  157.   :00464E52 7421                    je 00464E75
  158.   :00464E54 6A00                    push 00000000
  159.   :00464E56 668B0D884E4600          mov cx, word ptr [00464E88]
  160.  
  161. Step 10. Look at 00464E52, it's where it will jump to when it has fucked. Let's
  162.          see. Make sure the green color bar is on 00464E52 7421   je 00464E75
  163.          and you should see Offset address below on the screen like @Offset
  164.          00064252h. It's where you can patch it in SystemCleaner.EXE.
  165.  
  166.  
  167. Step 11. Go back to WC, run HIEW SYSTEM~1.EXE, press F4 to select Decode mode
  168.          (ASM), press F5 and enter 64252. You should see like:
  169.  
  170.   .00064E52: 7421                         jmps  .000064E75   ---------- (1)
  171.   .00064E54: 6A00                         push   000
  172.   .00064E56: 668B0D884E4600               mov    cx,[000464E88]
  173.  
  174. Step 12. That's where you can change the bytes, press F3, enter EB, press F9
  175.          to update SYSTEM~1.EXE. Exit HIEW.
  176.  
  177. Step 13. Run SystemCleaner.EXE, does it complain? Voila! You've made it!!
  178.  
  179.  
  180.  
  181. PART 2: To enable crippled features in Macro Schedular 4.3.11 (with W32Dasm)
  182.  
  183. Step 1. Run MSCHED.EXE
  184.  
  185. Step 2. Try to add more macros and it'll say that it has limited to 2 macros.
  186.         Write down this message and exit the program.
  187.  
  188. Step 3. Run WC, go to MSCHED directory.
  189.  
  190. Step 4. Copy MSCHED.EXE to MSCHED.EXX (for backup) and copy MSCHED.EXE to
  191.         MSCHED.W32 (for use by W32Dasm)
  192.  
  193. Step 5. Run W32Dasm and disassemble MSCHED.W32.
  194.  
  195. Step 6. Once it's disassembled, click STRING DATA REFERENCE, look down for the
  196.  
  197.         string "Unregistered copies of MS are limited to..".
  198.         (You should remember that error message), double click on it.
  199.  
  200. Step 7. Close SDR window, you should see the line:
  201.  
  202.   * Possible StringData Ref from Code Obj ->"Unregistered copies of Macro.."
  203.                                           ->"have a limit of 20 lines per.."
  204.  
  205.   :00448AED B860954400              mov eax, 00449560
  206.  
  207. Step 8. Ok, press UP arrow key till you see:
  208.  
  209.   :00448ACA 7530                    jne 00448AFC
  210.  
  211.   :00448ACC 8B8370020000            mov eax, dword ptr [ebx+00000270]
  212.   :00448AD2 8B80FC000000            mov eax, dword ptr [eax+000000FC]
  213.   :00448AD8 8B10                    mov edx, dword ptr [eax]
  214.   :00448ADA FF5210                  call [edx+10]
  215.   :00448ADD 83F813                  cmp eax, 00000013
  216.   :00448AE0 7E1A                    jle 00448AFC
  217.   :00448AE2 6A00                    push 00000000
  218.  
  219. Step 9. Look at 00448ACA and 00448AE0 addresses. It's where it will jump to
  220.  
  221.         when it complains. Let's find out.
  222.         Make sure the green color bar is on 00448ACA 7530        jne 00448AFC
  223.         and you should see Offset address below on the screen like @Offset
  224.         00047ECAh. It's where you can patch it in MSCHED.EXE.
  225.  
  226. Step 10. Go back to WC, run HIEW MSCHED.EXE, press F4 to select Decode mode
  227.          (ASM), press F5 and enter 47ECA. You should see like:
  228.  
  229.   .00048ACA: 7530                         jne   .000048AFC   ---------- (1)
  230.  
  231.   .00048ACC: 8B8370020000                 mov    eax,[ebx][000000270]
  232.   .00048AD2: 8B80FC000000                 mov    eax,[eax][0000000FC]
  233.   .00048AD8: 8B10                         mov    edx,[eax]
  234.   .00048ADA: FF5210                       call   d,[edx][00010]
  235.   .00048ADD: 83F813                       cmp    eax,013
  236.   .00048AE0: 7E1A                         jle   .000048AFC   ---------- (2)
  237.  
  238. Step 11. That's where you can change the bytes, press F3, enter EB and go below
  239.  
  240.          till 7E1A (offset 47EE0), enter EB and press F9 to update MSCHED.EXE.
  241.          Exit HIEW.
  242.  
  243. Step 12. It's not done yet! Open SDR window and double click on "Unregistered
  244.          copies.." again.
  245.  
  246. Step 13. Close SDR window, you should see the line:
  247.  
  248.   * Possible StringData Ref from Code Obj ->"Unregistered copies of Macro.."
  249.                                           ->"have a limit of 20 lines per.."
  250.  
  251.   :0044DB9E B86CDC4400              mov eax, 0044DC6C
  252.  
  253.  
  254. Step 14. Ok, press UP arrow key till you see:
  255.  
  256.   :0044DB7D 752C                    jne 0044DBAB
  257.   :0044DB7F 8B83D4090000            mov eax, dword ptr [ebx+000009D4]
  258.   :0044DB85 8B80FC000000            mov eax, dword ptr [eax+000000FC]
  259.   :0044DB8B 8B10                    mov edx, dword ptr [eax]
  260.   :0044DB8D FF5210                  call [edx+10]
  261.   :0044DB90 48                      dec eax
  262.   :0044DB91 7E18                    jle 0044DBAB
  263.  
  264. Step 15. Look at 0044DB7D and 0044DB91 addresses. It's where it will jump to
  265.  
  266.          when it complains. Let's find out.
  267.          Make sure the green color bar is on 0044DB7D 752C        jne 0044DBAB
  268.          and you should see Offset address below on the screen like @Offset
  269.          0004CF7Dh. It's where you can patch it in MSCHED.EXE.
  270.  
  271. Step 16. Go back to WC, run HIEW MSCHED.EXE, press F4 to select Decode mode
  272.          (ASM), press F5 and enter 4CF7D. You should see like:
  273.  
  274.   .0004DB7D: 752C                         jne   .00004DBAB   ---------- (1)
  275.  
  276.   .0004DB7F: 8B83D4090000                 mov    eax,[ebx][0000009D4]
  277.   .0004DB85: 8B80FC000000                 mov    eax,[eax][0000000FC]
  278.   .0004DB8B: 8B10                         mov    edx,[eax]
  279.   .0004DB8D: FF5210                       call   d,[edx][00010]
  280.   .0004DB90: 48                           dec    eax
  281.   .0004DB91: 7E18                         jle   .00004DBAB   ---------- (2)
  282.  
  283. Step 17. That's where you can change the bytes, press F3, enter EB and go below
  284.  
  285.          till 7E18 (offset 47F91), enter EB and press F9 to update MSCHED.EXE.
  286.          Exit HIEW.
  287.  
  288. Step 18. Not done yet! Open SDR window and double click on "Unregistered
  289.          copies.." again.
  290.  
  291. Step 19. Close SDR window, you should see the line:
  292.  
  293.   * Possible StringData Ref from Code Obj ->"Unregistered copies of Macro.."
  294.                                           ->"have a limit of 20 lines per.."
  295.  
  296.   :00450D3F B8001D4500              mov eax, 00451D00
  297.  
  298. Step 20. Ok, press UP arrow key till you see:
  299.  
  300.  
  301.   :00450D21 74CC                    je 00450CEF
  302.   :00450D23 8BC7                    mov eax, edi
  303.   :00450D25 E86635FBFF              call 00404290
  304.   :00450D2A E8C919FBFF              call 004026F8
  305.   :00450D2F 83FB14                  cmp ebx, 00000014
  306.   :00450D32 7E1A                    jle 00450D4E
  307.  
  308. Step 21. Look at 00450D32 address. It's where it will jump to when it complains
  309.          again, let's find out.
  310.          Make sure the green color bar is on 00450D32 7E1A        jle 00450D4E
  311.  
  312.          and you should see Offset address below on the screen like @Offset
  313.          00050132h. It's where you can patch it in MSCHED.EXE.
  314.  
  315. Step 22. Go back to WC, run HIEW MSCHED.EXE, press F4 to select Decode mode
  316.          (ASM), press F5 and enter 4CF7D. You should see like:
  317.  
  318.   .00050D32: 7E1A                         jle   .000050D4E   ---------- (4)
  319.   .00050D34: 6A00                         push   000
  320.   .00050D36: 668B0DF41C4500               mov    cx,[000451CF4]
  321.  
  322.  
  323. Step 23. That's where you can change the bytes, press F3, enter EB and press
  324.          F9 to update MSCHED.EXE. Exit HIEW.
  325.  
  326. Step 24. It's not done yet! (one more :-)) Open SDR window and double click
  327.          on "Unregistered copies.." again.
  328.  
  329. Step 25. Close SDR window, you should see the line:
  330.  
  331.   * Possible StringData Ref from Code Obj ->"Unregistered copies of Macro.."
  332.                                           ->"have a limit of 20 lines per.."
  333.  
  334.   :00452D25 B8E82F4500              mov eax, 00452FE8
  335.  
  336.  
  337. Step 26. Ok, press UP arrow key till you see:
  338.  
  339.   :00452D01 7531                    jne 00452D34
  340.   :00452D03 8B45FC                  mov eax, dword ptr [ebp-04]
  341.   :00452D06 8B80D4090000            mov eax, dword ptr [eax+000009D4]
  342.   :00452D0C 8B80FC000000            mov eax, dword ptr [eax+000000FC]
  343.   :00452D12 8B10                    mov edx, dword ptr [eax]
  344.   :00452D14 FF5210                  call [edx+10]
  345.   :00452D17 48                      dec eax
  346.   :00452D18 7E1A                    jle 00452D34
  347.  
  348.  
  349. Step 27. Look at 00452D01 and 00452D18 addresses. It's where it will jump to
  350.          when it complains. Let's find out.
  351.          Make sure the green color bar is on 00452D01 7531        jne 00452D34
  352.          and you should see Offset address below on the screen like @Offset
  353.          00052101h. It's where you can patch it in MSCHED.EXE.
  354.  
  355. Step 28. Go back to WC, run HIEW MSCHED.EXE, press F4 to select Decode mode
  356.          (ASM), press F5 and enter 52101. You should see like:
  357.  
  358.  
  359.   .00052D01: 7531                         jne   .000052D34   ---------- (1)
  360.   .00052D03: 8B45FC                       mov    eax,[ebp][-0004]
  361.   .00052D06: 8B80D4090000                 mov    eax,[eax][0000009D4]
  362.   .00052D0C: 8B80FC000000                 mov    eax,[eax][0000000FC]
  363.   .00052D12: 8B10                         mov    edx,[eax]
  364.   .00052D14: FF5210                       call   d,[edx][00010]
  365.   .00052D17: 48                           dec    eax
  366.   .00052D18: 7E1A                         jle   .000052D34   ---------- (2)
  367.  
  368.  
  369. Step 29. That's where you can change the bytes, press F3, enter EB and go below
  370.          till 7E1A (offset 52118), enter EB and press F9 to update MSCHED.EXE.
  371.          Exit HIEW.
  372.  
  373. Step 30. Finally, run MSCHED.EXE and try to add more macros or to add more than
  374.          20 lines in a script. Does it work? Kewl, you've made it!!
  375.  
  376.  
  377. PART 3: To crack TrayCal 1.0 (to enter any codes)
  378.  
  379. Step 1. Run TRAYCAL.EXE
  380.  
  381. Step 2. Enter your name and codes, you'll see the error message which it says
  382.  
  383.         that you've entered invalid codes. (You should write down this message)
  384.         and exit the program.
  385.  
  386. Step 3. Ok, exit the program.
  387.  
  388. Step 4. Run WC, go to TrayCal directory.
  389.  
  390. Step 5. Copy TRAYCAL.EXE to TRAYCAL.EXX (for backup) and copy TRAYCAL.EXE to
  391.         TRAYCAL.W32 (for use by W32Dasm)
  392.  
  393. Step 6. Run W32Dasm and disassemble TRAYCAL.W32
  394.  
  395. Step 7. Once it's disassembled, click STRING DATA REFERENCE, look down for the
  396.         string "Sorry, invalid registration code..".
  397.  
  398.         (You should remember that error message), double click on it.
  399.  
  400. Step 8. Close SDR window, you should see the line:
  401.  
  402.   :0043FD30 7E1A                    jle 0043FD4C
  403.   :0043FD32 6A00                    push 00000000
  404.   :0043FD34 668B0DE4FF4300          mov cx, word ptr [0043FFE4]
  405.   :0043FD3B 33D2                    xor edx, edx
  406.  
  407.   * Possible StringData Ref from Code Obj ->"Sorry, invalid registration code."
  408.  
  409.          Look at 0043FD30 address, it's where it'll jump to when invalid codes. 
  410.  
  411.          Let's try.
  412.          Make sure the green color bar is on 0043FD30 7E1A        jle 0043FD4C 
  413.          and you should see Offset address below on the screen like @Offset
  414.          0003F130h. It's where you can patch it in TRAYCAL.EXE.
  415.  
  416. Step 9. Go back to WC, run HIEW TRAYCAL.EXE, press F4 to select Decode mode
  417.         (ASM), press F5 and enter 3F130. You should see like:
  418.  
  419.   .0003FD30: 7E1A                         jle   .00003FD4C   ---------- (1)
  420.   .0003FD32: 6A00                         push   000
  421.  
  422.   .0003FD34: 668B0DE4FF4300               mov    cx,[00043FFE4]
  423.   .0003FD3B: 33D2                         xor    edx,edx
  424.  
  425. Step 10. That's where you can change the bytes, press F3, enter EB, press F9
  426.          to update TRAYCAL.EXE. Exit HIEW.
  427.  
  428. Step 11. Run TRAYCAL.EXE, does it work? Nah, it compares also shit in registry!
  429.  
  430. Step 12. Go back to W32Dasm, click again on "Sorry, invalid registration.."    
  431.  
  432. Step 13. Close SDR window, you should see the line:
  433.  
  434.   * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  435.  
  436.   |:0043FE34(C)
  437.   |
  438.   :0043FF1B 6A00                    push 00000000
  439.   :0043FF1D 668B0DE4FF4300          mov cx, word ptr [0043FFE4]
  440.   :0043FF24 33D2                    xor edx, edx
  441.  
  442.   * Possible StringData Ref from Code Obj ->"Sorry, invalid registration code."
  443.  
  444.          Do you see above that Referenced Jump at Address? : 0043FE34(C) 
  445.          Now press PgUp key 2 or 3 times till you see:
  446.  
  447.   :0043FE34 0F85E1000000            jne 0043FF1B
  448.  
  449.   * Possible StringData Ref from Code Obj ->"Software\Spaeder"
  450.  
  451.  
  452.   :0043FE3A 8B0DDC194400            mov ecx, dword ptr [004419DC]
  453.  
  454. Step 14. Look at 0043FE34 address, we know that it compares again before adding
  455.          a new registration/data to your registry. Now let's try.
  456.          Make sure the green color bar is on 0043FE34 0F85E1000000 jne 0043FF1B
  457.          and you should see Offset address below on the screen like @Offset
  458.          0003F234h. It's where you can patch it in TRAYCAL.EXE.
  459.  
  460. Step 15. Go back to WC, run HIEW TRAYCAL.EXE, press F4 to select Decode mode
  461.  
  462.          (ASM), press F5 and enter 3F234. You should see like:
  463.  
  464.   .0003FE34: 0F85E1000000                 jne   .00003FF1B   ---------- (1)
  465.   .0003FE3A: 8B0DDC194400                 mov    ecx,[0004419DC]
  466.   .0003FE40: B201                         mov    dl,001
  467.   .0003FE42: A128D84300                   mov    eax,[00043D828]
  468.  
  469. Step 16. That's where you can change the bytes, press F3, enter 0F84, press F9
  470.          to update TRAYCAL.EXE. Exit HIEW.
  471.  
  472. Step 17. Run TRAYCAL.EXE, does it work? Kewl, you've registered it!!
  473.  
  474.  
  475.  
  476. PART 4: Why I copy *.EXE to *.W32 files
  477.  
  478. I know some people is wondering why I copy *.EXE to *.W32 files. Easily..
  479. I use *.EXX when sometimes the program won't work, then I could copy *.EXX back
  480. to *.EXE files. And when *.W32 I can't patch *.EXE files when it's still used
  481. by W32Dasm, therefore W32Dasm uses now *.W32 files.. Now tell me how I can do
  482. that trick! :-) Also, remember to save disassembled files before exiting
  483. W32Dasm, next time you don't need to disassemble programs again. You can open
  484.  
  485. saved files by clicking on Open Project Files!
  486.  
  487.  
  488. PART 5: ASM Source Code for a Patcher by Nop/PC '97
  489.  
  490. -------------------------------<cut here>-------------------------------------
  491.  
  492. ;_______________________________________________________________
  493. ;
  494. ; Patcher by Nop [Pc] - SourceCode 100% free
  495. ;
  496. ;   To use with A86:
  497. ;       A86 CrkNop.asm
  498. ;
  499. ;   To use with TASM:
  500. ;       tasm CrkNop.asm
  501. ;       tlink /t CrkNop.obj
  502. ;
  503. ; Greetz to all members of the Scene
  504.  
  505. ;_______________________________________________________________
  506.  
  507. .MODEL TINY
  508. .CODE
  509. .286
  510. ORG 100h
  511.  
  512.  
  513. start:
  514.                 mov     ah, 9               ; ■ Show Title ■                
  515.                 mov     dx, offset MainTitle
  516.  
  517.         int     21h
  518.  
  519.                 mov     ax, 3D02h           ; ■ Open File ■    
  520.                 mov     dx, offset filename
  521.         int     21h
  522.         jnb     Ok
  523.  
  524.  
  525.                 mov     ah, 9               ; ■ File Not Found ■
  526.                 mov     dx, offset error
  527.         int     21h 
  528.  
  529.                 mov     ax, 4C01h           ; ■ Exit with error ■
  530.         int     21h
  531. ;_______________________________________________________________
  532. Ok:
  533.  
  534.                 mov     bx, ax              ; ■ Move pointer ■
  535.  
  536.            
  537.                 mov     ax, 4200h
  538.                 mov     cx, 0            ; segment 
  539.                 mov     dx, 565          ; offset
  540.                 int     21h  
  541.  
  542.                 mov     ax, 4000h           ; ■ Write values ■
  543.                 mov     cx, 1            ; number of bytes to write
  544.                 mov     dx, offset BytesToWrite
  545.                 int     21h
  546.  
  547.                 mov     ax, 3E00h           ; ■ Close file ■
  548.                 int     21h
  549.  
  550.  
  551.  
  552.                 mov     ah, 9               ; ■ Show msg ■
  553.                 mov     dx, offset done
  554.                 int     21h
  555.  
  556.                 mov     ax, 4C00h           ; ■ All Done And Exit ■
  557.                 int     21h
  558.  
  559. ;_______________________________________________________________
  560.  
  561. MainTitle       db 0Dh,0Ah
  562.                 db ' █▀▀▀▀▀▀▀▀█▄ ▄█▀▀▀▀▀▀▀█▄ █▀▀▀▀▀▀▀▀█▄',0Dh,0Ah 
  563.                 db ' █         █ █         █ █         █',0Dh,0Ah
  564.                 db ' █    █    █ █    █    █ █    █    █',0Dh,0Ah       
  565.  
  566.                 db ' █    █    █ █    █    █ █        ▄█',0Dh,0Ah 
  567.                 db ' █    █    █ █    █    █ █   █▀▀▀▀▀ ',0Dh,0Ah 
  568.                 db ' █    █    █ █         █ █   █ proudly',0Dh,0Ah
  569.                 db ' █▄▄▄▄█▄▄▄▄█ ▀█▄▄▄▄▄▄▄█▀ █▄▄▄█ presents',0Dh,0Ah
  570.                 db ' ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄',0Dh,0Ah
  571.                 db '█▀                                   ▀█',0Dh,0Ah
  572.                 db '█              PROG NAME              █',0Dh,0Ah
  573.  
  574.                 db '█           REMOVE CD-CHECK           █',0Dh,0Ah 
  575.                 db '█               BY  NOP               █',0Dh,0Ah
  576.                 db '█▄                                   ▄█',0Dh,0Ah
  577.                 db ' ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ',0Dh,0Ah
  578.                 db 0Dh,0Ah,'$'
  579.  
  580. error           db ' ■ ERROR: Hm... problem with file ? ',0Dh,0Ah,'$'
  581.  
  582. filename        db 'FILE.EXE',0
  583.  
  584. done            db ' ■ Enjoy !'         , 0Dh,0Ah,'$'
  585.  
  586.  
  587. BytesToWrite    db 0EBh
  588.  
  589.  
  590.                 end    start
  591. -------------------------------<cut here>-------------------------------------
  592.  
  593. Ok, enough for now. I hope you've enjoyed this tutor too much as I did! :-)
  594. I'll see you next time at Tutor #5!
  595.  
  596. PersGreetz to Taha, Taylor, ThatDude, Archimede, PowerLord and everyone in PC!!
  597.  
  598. This tutor is dedicated to Taha.. without her I couldn't go so much further,
  599. and if it was not her, I couldn't go back to PC for permanent. So I'll stay
  600.  
  601. in PC, long live PhRoZeN CReW!! Thanx babe :-)
  602.  
  603. You can find me at #pc98 or email me at tkc@goplay.com
  604.  
  605. Enjoy it,
  606. The Keyboard Caper,
  607. The Founder of PhRoZeN CReW '94 - '98
  608. 25-12-1997